package com.mycontract.suitepro.contract

/** 优先级2：从referrer打开 */
object ContractParamsFromReferrer {

    // 无效的安装
    val NOT_VALID_SOURCES = mutableListOf(
        "utm_source=google-play",
        "google&utm_medium=organic",
        "utm_medium=organic",
        "utm_content=",
        "utm_source=google-play&utm_medium=organic",
        "utm_source=organic",
        "utm_medium=organic_search"
    )

    // 订单号
    var mOrderId: String = ""

    // 产品
    var mProduct: String = ""

    // 手机号
    var mMobile: String = ""

    // 来源
    var mSourceType: String = ""

    // scheme 只有是mSourceType=app时才有值
    var mScheme: String = ""

    // host mSourceType=h5时，它为来源地址
    var mHost: String = ""

    // referrer
    var mReferrer: String = ""

    // 获取到referrer回调
    var mOnReferrerChangedListener: (String) -> Unit = {}

    // 是否已获取到referrer
    var isConversionCompleted: Boolean = false

    // 设置referrer回调
    fun setOnReferrerChangedListener(listener: (String) -> Unit) {
        mOnReferrerChangedListener = listener
    }

    /** 根据外部传参数初始化 */
    fun initSourceData(referrer: String?) {
        mReferrer = referrer ?: ""
        isConversionCompleted = true
//        if (mReferrer.contains("&")) {
//            val paramList = mReferrer.split("&")
//            paramList.forEach { item ->
//                val itemList = item.split("=")
//                if (itemList.size > 1) {
//                    val pKey = itemList[0]
//                    val pValue = itemList[1]
//
//                    // 订单号
//                    if (pKey.equals(ContractReviceParams.KEY_ORDER_ID, true)) {
//                        mOrderId = pValue
//                    }
//                    // 手机号
//                    if (pKey.equals(ContractReviceParams.KEY_MOBILE, true)) {
//                        mMobile = pValue
//                    }
//                    // 产品
//                    if (pKey.equals(ContractReviceParams.KEY_PRODUCT, true)) {
//                        mProduct = pValue
//                    }
//                    // 来源 app/h5
//                    if (pKey.equals(ContractReviceParams.KEY_SOURCE_TYPE, true)) {
//                        mSourceType = pValue
//                    }
//                    // scheme
//                    if (pKey.equals(ContractReviceParams.KEY_SCHEME, true)) {
//                        mScheme = pValue
//                    }
//                    // host
//                    if (pKey.equals(ContractReviceParams.KEY_HOST, true)) {
//                        mHost = pValue
//                    }
//                }
//            }
//        }

        // 回调
        mOnReferrerChangedListener.invoke(mReferrer)

        // 输出
        printData()
    }

    /** 是否为有效回传值 */
    fun isValidParams(): Boolean {
        val isNotValid = NOT_VALID_SOURCES.any { mReferrer.equals(it, true) }
        val isNotValidEmpty = mReferrer.isBlank()
        if (isNotValid or isNotValidEmpty) {
            return false
        }

        return true
    }

    /** 输出 */
    fun printData() {
        println("--->referrer:$mReferrer")
//        println("--->orderId:${mOrderId}\nmobile:${mMobile}\nproduct=${mProduct}\nsourceType=${mSourceType}\nscheme=${mScheme}\nhost=${mHost}")
    }
}